/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package doc2db.fileWorker;

import doc2db.Keey;
import doc2db.Launcher;
import doc2db.interfaces.xmledit.MTextArea;
import java.io.File;
import javax.swing.JOptionPane;

/**
 *  <p>Класс генерирующий конфигурационные файлы и
 * содержащий значение путей к ним</p>
 * @author yura
 */
public class FileBeginer {
    /** Месторасположение каталога со всеме ресурсами "$HOME/resurseDoc2Db"*/
    public static final String resurseFolder = Keey.classPath + Keey.sp + "resurseDoc2Db";
    /** Месторасположение каталога с ресурасами пользователей "$HOME/resurseDoc2Db/users"*/
    public static final String resurse_usersFolder = resurseFolder + Keey.sp + "users";
    /** Месторасположение каталога с програмнными ресурсами "$HOME/resurseDoc2Db/resurse"*/
    public static final String resurse_resurseFolder = resurseFolder + Keey.sp + "resurse";
    /** "$HOME/resurseDoc2Db/resurse/pane" */
    public static final String resurse_resurseFolderPane = resurse_resurseFolder + Keey.sp + "pane";
    /** "$HOME/resurseDoc2Db/resurse/menu" */
    public static final String resurse_resurseFolderMenu = resurse_resurseFolder + Keey.sp + "menu";
    /** "$HOME/resurseDoc2Db/resurse/tolBar" */
    public static final String resurse_resurseFolderTolBar = resurse_resurseFolder + Keey.sp + "tolBar";
    /** Месторасположение каталога с ресурасами для всех пользователей "$HOME/resurseDoc2Db/users/popular"*/
    public static final String resurse_users_popularFolder = resurse_usersFolder + Keey.sp + "popular";
    /** Месторасположение каталога с пользователями (это то же каталоги) $HOME/resurseDoc2Db/users/users*/
    public static final String resurse_users_usersFolder = resurse_usersFolder + Keey.sp + "users";

    /** название каталога с ресурсами для редактора */
    public static final String EDITOR_DIR = "editor";
    /** Меню ресурсы для редактора "$HOME/resurseDoc2Db/resurse/menu/editor" */
    public static final String resurse_resurseFolderMenu_editor =
            resurse_resurseFolderMenu + Keey.sp + EDITOR_DIR;
    /** Панельные ресурсы для редактора "$HOME/resurseDoc2Db/resurse"/tolBar/editor" */
    public static final String resurse_resurseFolderTolBar_editor =
            resurse_resurseFolderMenu + Keey.sp + EDITOR_DIR;

    /** Название файла с описанием шаблона */
    public static final String metaTemplatesName = "metaTemplates.xml";
    /** Название файла шаблона */
    public static final String templatesName = "templates.xml";

    /** Файл со списком пользователей */
    public static final String useListName = "userList.inf";
    /** Сss файл для всех html страничек */
    public static final String teamCssName = "cpp.css";
    /** Файл с sql запросами к БД */
    public static final String sqlSelects = "sqlselects";

    /**  */
    private boolean neededTowait = false;

    static {
        MTextArea.setIconPath(FileBeginer.resurse_resurseFolderMenu_editor);
    }
    
    /**
     * <p>Метод создаёт необходимые файлы и каталоги необходимые для
     * функционорования программы, если те ещё не созданны</p>
     */
    public void createFiles(){
        File resD = new File(resurseFolder);
        if (!resD.exists()) {
            resD.mkdir();
            if (Keey.debug) {
                System.out.println(resD.getAbsolutePath() + " - dir created");
            }
        }
        File usrD = new File(resurse_usersFolder);
        if (!usrD.exists()) {
            usrD.mkdir();
            if (Keey.debug) {
                System.out.println(usrD.getAbsolutePath() + " - dir created");
            }
        }

        File uResD = new File(resurse_resurseFolder);
        if (!uResD.exists()) {
            uResD.mkdir();
            if (Keey.debug) {
                System.out.println(uResD.getAbsolutePath() + " - dir created");
            }
        }
        File uResPnD = new File(resurse_resurseFolderPane);
        if (!uResPnD.exists()) {
            uResPnD.mkdir();
            if (Keey.debug) {
                System.out.println(uResPnD.getAbsolutePath() + " - dir created");
            }
        }
        File uResMnD = new File(resurse_resurseFolderMenu);
        if (!uResMnD.exists()) {
            uResMnD.mkdir();
            if (Keey.debug) {
                System.out.println(uResMnD.getAbsolutePath() + " - dir created");
            }
        }
        File uResTbD = new File(resurse_resurseFolderTolBar);
        if (!uResTbD.exists()) {
            uResTbD.mkdir();
            if (Keey.debug) {
                System.out.println(uResTbD.getAbsolutePath() + " - dir created");
            }
        }


        File uResShrD = new File(resurse_users_popularFolder);
        if (!uResShrD.exists()) {
            uResShrD.mkdir();
            if (Keey.debug) {
                System.out.println(uResShrD.getAbsolutePath() + " - dir created");
            }
        }
        File uResUsrD = new File(resurse_users_usersFolder);
        if (!uResUsrD.exists()) {
            uResUsrD.mkdir();
            if (Keey.debug) {
                System.out.println(uResUsrD.getAbsolutePath() + " - dir created");
            }
        }
        String mTmpltFN = resurse_users_popularFolder + Keey.sp + metaTemplatesName;
        if (!new File(mTmpltFN).exists()) {
            FileIO.createFile(FileBeginer.getMetaTemplates(), mTmpltFN);
            neededTowait = true;
        }
        String tmpltFN = resurse_users_popularFolder + Keey.sp + templatesName;
        if (!new File(tmpltFN).exists()) {
            FileIO.createFile(FileBeginer.getTemplates(), tmpltFN);
            neededTowait = true;
        }

        String usrLstFN = resurse_users_usersFolder + Keey.sp + useListName;
        if (!new File(usrLstFN).exists()) {
            FileIO.createFile("", usrLstFN);
        }

        String str2 = "" + resurse_resurseFolder + Keey.sp + sqlSelects;
        if (!new File(str2).exists()) {
            FileWorker.addNewProperty(str2, "tableList",
                    " SELECT pg_class.relname,pg_namespace.nspname FROM pg_class" +
                    " INNER JOIN pg_namespace ON pg_class.relnamespace=pg_namesp" +
                    "ace.oid WHERE pg_table_is_visible(pg_class.oid)"+
                    " AND nspname!='pg_catalog';");
            FileWorker.addNewProperty(str2, "tableProp",
                    "select  TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, " +
                    "DATA_TYPE, CHARACTER_MAXIMUM_LENGTH from DB_NAME.information_schema.columns " +
                    "where table_name = 'TABLE_NAME'");
            FileWorker.addNewProperty(str2, "rowCount",
                    " SELECT count (*) as \"row count\" FROM ");
            FileWorker.addNewProperty(str2, "templatesDbName", "doc2db");
            FileWorker.addNewProperty(str2, "templatesDbHost", "localhost");
            FileWorker.addNewProperty(str2, "templatesDbUser", "postgres");
            FileWorker.addNewProperty(str2, "templatesDbTableName", "templatesDoc2db");
            JOptionPane.showMessageDialog(null, "Файл с ресурсами был создан :" + str2,
                    "massage", JOptionPane.INFORMATION_MESSAGE);
        }

    }
    
    public boolean isNeededTowait(){
        return neededTowait;
    }

    public static String getMetaTemplates(){
        return Launcher.getText("cleanMetaTemplates.xml");
    }

    public static String getTemplates(){
        return Launcher.getText("cleanTemplates.xml");
    }

    public static String getFullMetaTemplates(){
        return Launcher.getText("MetaTemplates.xml");
    }

    public static String getFullTemplates(){
        return Launcher.getText("Templates.xml");
    }

    public static String getCss(){
        return Launcher.getText("css.css");
    }

}
